const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

console.log('开始打包应用...');

// 目标目录
const targetDir = path.join(__dirname, '../dist-app');
const sourceDir = path.join(__dirname, '../dist');

// 清理目标目录
if (fs.existsSync(targetDir)) {
  console.log('正在清理目标目录...');
  try {
    fs.rmSync(targetDir, { recursive: true, force: true });
    console.log('清理完成');
  } catch (err) {
    console.error('清理目录失败:', err);
  }
}

// 创建目标目录
console.log('创建目标目录...');
fs.mkdirSync(targetDir, { recursive: true });

// 复制package.json到dist目录
console.log('准备package.json...');
const packageJson = require('../package.json');
// 只保留NW.js所需的字段
const nwPackage = {
  name: packageJson.name,
  version: packageJson.version,
  main: 'index.html',
  'node-remote': packageJson['node-remote'],
  window: packageJson.window
};
fs.writeFileSync(path.join(sourceDir, 'package.json'), JSON.stringify(nwPackage, null, 2));

// 复制dist目录内容到dist-app
console.log('复制构建文件到目标目录...');
fs.cpSync(sourceDir, targetDir, { recursive: true });

console.log('下载NW.js...');
// 确保node_modules目录存在
if (!fs.existsSync(path.join(targetDir, 'node_modules'))) {
  fs.mkdirSync(path.join(targetDir, 'node_modules'), { recursive: true });
}

try {
  // 尝试复制已有的NW.js
  const nwSource = path.join(__dirname, '../node_modules/nw');
  if (fs.existsSync(nwSource)) {
    console.log('使用已安装的NW.js...');
    fs.cpSync(nwSource, path.join(targetDir, 'node_modules/nw'), { recursive: true });
  } else {
    console.log('未找到已安装的NW.js，需要安装...');
    // 在目标目录安装NW.js
    execSync('npm install nw@0.50.2 --save', { cwd: targetDir });
  }
  
  console.log('打包完成!');
  console.log(`应用已打包到: ${targetDir}`);
  console.log('你可以通过运行以下命令启动应用:');
  console.log(`  cd ${targetDir} && npx nw .`);
} catch (error) {
  console.error('打包过程中出现错误:', error);
} 